//
//  WTEmoticonTools.swift
//  WTSinaWeibo
//
//  Created by  Wellim on 16/7/5.
//  Copyright © 2016年  Wellim. All rights reserved.
//

import UIKit

// 显示的列数
let EmoticonMaxCol = 7
// 显示的行数
let EmoticonMaxRow = 3
// 每页显示的个数
let EmoticonMaxCount = EmoticonMaxCol * EmoticonMaxRow - 1

class WTEmoticonTools: NSObject {

   // 全局访问点
    static let sharedEmoticonTools:WTEmoticonTools = WTEmoticonTools()
   
     // 01 获得bundle
    lazy var emotionBundle: NSBundle = {
     // 获取bundle路径
     let path = NSBundle.mainBundle().pathForResource("Emoticons.bundle", ofType: nil)!
        // 返回bundle
      return  NSBundle(path: path)!
    
    }()
   
    // default 表情 一维数组
    lazy var defaultEmotion:[WTEmoticon] = {
    
        return self.getEmotions("default/")
    }()
    
    // emoji 表情 一维数组
    lazy var emojiEmotion:[WTEmoticon] = {
      
      return self.getEmotions("emoji/")
        
    }()
    // 浪小花 表情 一维数组
    lazy var lxhEmotion:[WTEmoticon] = {
        
        return self.getEmotions("lxh/")
        
    }()
   
    // 表情三维数组
    lazy var allEmoticons: [[[WTEmoticon]]] = {
      
        return [
                self.getEmoticonsGroup(self.defaultEmotion),
                self.getEmoticonsGroup(self.emojiEmotion),
                self.getEmoticonsGroup(self.lxhEmotion)
          ]
                
    
    }()
    
    // 读取plist文件中的数组转成模型一维数组
    func getEmotions(fileName: String) -> [WTEmoticon] {
        // 路径
        let file = emotionBundle.pathForResource("\(fileName)info.plist", ofType: nil)!
        // plist 转数组
        let array = NSArray(contentsOfFile: file)!
         // 创建一个可变的临时数组
        var tempArray:[WTEmoticon] = [WTEmoticon]()
        // 遍历array
        for dic in array {
            
            let dicArray = WTEmoticon(dict: dic as! [String:AnyObject])
            
            // 获取路径
            dicArray.path = "\(fileName)"
            
            // 保存模型
            tempArray.append(dicArray)
            
        }
        
        return tempArray
    }
    
    /*
     目前有一维数组
     - 默认表情  一共108个
     - emoji表情 一共80个
     - 浪小花    一共40个
     
     把以上的一维数组转成二维数组
     默认表情
     [20 20 20 20 20 8] 0 -19  20- 39 ..... 100- 107
     emoji表情
     [20 20 20 20 ] 0-19 20 -39 40 -59
     浪小花
     [20 20]
     
     */
    // 一维数组转二维数组

    func getEmoticonsGroup(emoticons: [WTEmoticon]) -> [[WTEmoticon]] {
        // 计算页数
        let pageCount = (emoticons.count + EmoticonMaxCount - 1) / EmoticonMaxCount
        
        // 创建一个临时的可变的二维数组
        var tempArray: [[WTEmoticon]] = [[WTEmoticon]]()
        
        //遍历pageCount
        for i in 0..<pageCount {
            
            let loc  = EmoticonMaxCount * i
            var len = EmoticonMaxCount
            // 防止默认表情数组越界
            if loc + len > emoticons.count{
                len = emoticons.count - loc
            }
            let range = NSMakeRange(loc, len)
            
             // 截取范围
            let arr = (emoticons as NSArray).subarrayWithRange(range) as! [WTEmoticon]
            // 保存一维数组
            tempArray.append(arr)
        }
         // 返回二维数组
        return tempArray
    }
    
    func getSearchEmoticon(chs: String) -> WTEmoticon? {
        
        // 遍历默认
        for e in defaultEmotion {
            // 如果chs相同
            if e.chs == chs {
                return e
            
            }
            // 遍历浪小花
        }
        
        for e in lxhEmotion {
                // 如果chs相同
        if e.chs == chs {
            return e
   
        }
                
                
     }
            
      return nil
        
 }
    
        
    
    
}
